//封装 axios 的获取
/*
1.封装了 baseUrl 根路径  网址
2.封装 获取数据的过期时间
3.封装 请求拦截和响应拦截
4.封装了数据获取到之前的旋转小图标
5.数据如果没有获取到的报错信息

*/
import store from '../store'
//引入报错的全局方法
import {Loading, Message} from 'element-ui';
//获取 环境配置项中的api的基础路径
console.log(process.env.VUE_APP_API_URL);

//1.引入axios
import axios from "axios";
import Vue from "vue";
const service = axios.create({
    baseURL: process.env.VUE_APP_API_URL,//"http://localhost:3007",
    timeout: 10000
})
//创建 保存 旋转小图标的变量
var loadObj = null;

//请求拦截
service.interceptors.request.use(
    (config)=>{
        console.log(config);
        if (!loadObj){
            loadObj = Loading.service({
                lock: true,
                target: "#loading",
                text: "加载中...",
                spinner: "el-icon-loading",
                background: "rgba(0,0,0,0.5)"
            })
        }
        //假如有token ，需要设置 token 令牌
        config.headers['user-token'] = store.getters.token;
        return config;
    },
    (error) => {
        Vue.nextTick(()=>{//以服务的方式调用的 Loading 需要异步关闭
            loadObj.close();
        });
        //表示错误返回
        return Promise.reject(error);
    }
)

//响应拦截
service.interceptors.response.use(
    (response)=>{
        //对响应数据做点什么
        console.log(35,response);
        Vue.nextTick(()=>{//以服务的方式调用的 Loading 需要异步关闭
            loadObj.close();
        });
        if (response.data.code == 666){
            return response;
        }else {
            Message({
                message:response.data.msg,
                type:"error"
            });
            return Promise.reject(response.data.msg);
        }
    },(error) => {
        Vue.nextTick(()=>{//以服务的方式调用的 Loading 需要异步关闭
            loadObj.close();
        });
        Message({
            message:error,
            type:"error"
        });
        //对响应错误做点什么
        return Promise.reject(error);
    });

//输出
export default service;